package 子数组系列;

public class test3 {
    // 有可能两个连续的数都是负数
    public int maxProduct(int[] nums){
        int n = nums.length;
        int[] dp1 = new int[n+1];
        int[] dp2 = new int[n+1]; // 万一有负数
        dp1[0]=dp2[0]=1;
        int ret = Integer.MIN_VALUE;
        for (int i = 1; i <=n; i++) {
            int x = nums[i-1];
            int flag = dp1[i-1]*x;
            int flag2 = dp2[i-1]*x;
            dp1[i] = Math.max(x,Math.max(flag,flag2));
            dp2[i] = Math.min(x,Math.min(flag,flag2));
            ret = Math.max(ret,dp1[i]);
        }
        return ret;
    }
}
